package main
import ("fmt")

type Salutation struct{
  name string
  greeting string
}
const(
  PI = 3.14
  Language = "Go"
)
const(
  A = iota
  B
  C
)
type Printer func(string) ()

func Greet(salution Salutation, do Printer)  {
  message, number :=CreateMessage(salution.name, salution.greeting,"234")
  // fmt.Println(message, number)
  do(message)
  fmt.Println(number)
  // fmt.Println("name: ", salution.name)
  // fmt.Println("greeting: " ,salution.greeting)
}
func CreateMessage(name string, greeting ...string) (message string, number int) {
  // return greeting + "  :  "+name, 100
  fmt.Println(len(greeting))
  message = greeting[1] + "  :  "+name
  number = 1000
  return
}
func Print(s string)  {
  fmt.Print(s)
}
func Println(s string)  {
  fmt.Println(s)
}
func CreatePrintFunction(custom string)  Printer{
  return func (s string)  {
    fmt.Println(s + custom)
  }
}
func PrintCustom(s string, custom string)  {
  fmt.Println(s+custom)
}
func main()  {
  var message string = "hello goo"
  var greeting *string = &message
  // *greeting = "jijji"
  fmt.Println(message, *greeting)

  var s = Salutation{"joe", "hello"}
  // fmt.Println("name:",s.name)
  // fmt.Println(s.greeting)
  Greet(s, CreatePrintFunction(" !!!!"))

  fmt.Println(PI)
  fmt.Println(A)
  fmt.Println(B)
}
